package stats

import (
	"gitee.com/sansaniot/ssiot-core/facade/env"
	"github.com/shopspring/decimal"
	"time"
)

type IotStatResult struct {
	Id         string           `json:"id" gorm:"primaryKey;"`
	Window     string           `json:"window"`    //统计窗口
	Sn         string           `json:"sn"`        //设备序列号
	Attribute  string           `json:"attribute"` //统计属性，多个以英文逗号隔开
	RuleId     string           `json:"ruleId"`
	StatTime   time.Time        `json:"statTime"`                         //统计时间
	AvgValue   *decimal.Decimal `json:"avg" gorm:"type:decimal(64,8);"`   //平均值
	SumValue   *decimal.Decimal `json:"sum" gorm:"type:decimal(64,8);"`   //累加值
	DiffValue  *decimal.Decimal `json:"diff" gorm:"type:decimal(64,8);"`  //差值=结束值-开始值
	MaxValue   *decimal.Decimal `json:"max" gorm:"type:decimal(64,8);"`   //最大值
	MinValue   *decimal.Decimal `json:"min" gorm:"type:decimal(64,8);"`   //最小值
	StartValue *decimal.Decimal `json:"start" gorm:"type:decimal(64,8);"` //开始值
	EndValue   *decimal.Decimal `json:"end" gorm:"type:decimal(64,8);"`   //结束值
}

// TableName 自定义表名称
func (IotStatResult) TableName() string {
	return "sys_stat_result"
}

// BatchInsertStatResult 统计结果批量入库
func BatchInsertStatResult(statResult []IotStatResult) int64 {
	//批量插入
	affectCount := env.Db.Create(&statResult).RowsAffected
	//返回
	return affectCount
}
